package com.fesine.batch.service;


import com.fesine.batch.dto.BatchScheduleGroupDTO;

import java.util.Date;
import java.util.List;


public interface BatchSchedulerBrokerService {
    /**
     * 注册任务组定时
     * 
     * @param groupId
     * @param delay
     * @return 下一次运行时间
     */
    public Date schedule(String groupId, Integer delay);

    /**
     * 注册任务组定时
     *
     * @param groupId
     * @param startTime
     * @return 下一次运行时间
     */
    public Date schedule(String groupId, Date startTime);


    /**
     * 取消任务组定时
     * 
     * @param groupId
     * @return
     */
    public boolean unschedule(String groupId);


    /**
     * 启动定时器
     */
    public boolean startScheduler();


    /**
     * 停止定时器
     */
    public boolean stopScheduler();


    /**
     * 查询所有计划任务的下一次执行时间
     * 
     * @return
     * @throws Exception
     */
    List<BatchScheduleGroupDTO> listScheduledGroups() throws Exception;
}